package com.sse.logica;

import java.util.Observable;
import java.util.Queue;
import java.util.concurrent.ConcurrentLinkedQueue;

/**
 * 
 * @author Paul
 *
 * @param <T>
 */
public class ColaEventosObservable <T> extends Observable{

	/** LIsta doble que respalda la cola observable. */
	private Queue<T> colaEventos;
	
	
	public ColaEventosObservable() {
		colaEventos = new ConcurrentLinkedQueue<T>();
	}
	
	public void encolar(T data){
		this.colaEventos.add(data);
		this.setChanged();
		this.notifyObservers();
	}
	
	
	/**
	 * Obtiene el primer elemento de la cola.
	 * @return Primer elemento de la cola, nulo si es vacio. 
	 */
	public T obtener(){
		return this.colaEventos.poll();
	}
	
	

}
